The present invention relates to the programming of in-system programmable devices, and more particularly to programming such devices across multiple system boards.
In-system programmable (ISP) programmable logic devices (PLDs) allow for the programming of the devices. after they have been soldered into place on a board. Typically, in-system programming is done when the board is in the testing phase of the manufacturing process, or during an upgrade operation when an external programmer is attached to the board while the board is in a system cabinet or when the board is removed from the cabinet and programmed on an external programmer. These programming methods suffer the disadvantages of having to program all the boards in a system one at a time, and, in the case of system upgrades, often having to remove each board from the system for programming. Another disadvantage of typical programming methods is that they usually require separate board-edge connections for each separate ISP PLD vendor represented on the board. In addition to PLDs, there often are other field programmable devices (FPDs) on a board, such as programmable memories and programmable analog devices. Typical in-system programming methods to reprogram these devices also suffer from some of the same disadvantages in that each board has to be programmed one at a time, and often has to be removed from the system.
The present invention provides a system for the programming of FPDs of different types and manufactures across different system boards. The system uses an in-system programmable master (ISPM) that communicates over a bus to in-system programmable slaves (ISPSs) located on one or more system boards. FPDs on each board are connected into separate chains of like type, and each chain is connected to an ISPS located on the board. Each ISPS is capable of programming all of the FPDs on a board in the protocol appropriate to the FPD.
Each ISPS has a unique address, and each FPD chain on an ISPS has a different address. The ISPM uses a packet based protocol to communicate with all ISPSs in a system. Each packet comprises an ISPS address field, a chain select field, a command field and a data field. Each ISPS reads packets addressed to it, translates the commands into the appropriate protocol, and communicates with the selected FPD chain to perform the requested programming functions. In a system having multiple FPD chains that are loaded with the same program, e.g., a telecommunication system with multiple identical line cards, provision is made to program like FPD chains across multiple boards at the same time.